package Control;

import Handler.DragAndDrop;
import Handler.TableTransferHandler;
import Modelo.Aula;
import Modelo.Grupo;
import Modelo.Lecciones;
import Modelo.Materia;
import Modelo.Nivel;
import Modelo.Profesor;
import Modelo.RegistroHorario;
import Modelo.Usuario;
import Vista.HorarioAlternoConsultar1;
import Vista.HorarioAlternoInsertar1;
import Vista.HorarioConsultar1;
import Vista.HorarioInsertar;
import Vista.HorarioInsertar1;
import Vista.Interfaz;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author Casa
 */
public class Control {

    private Interfaz interfaz;
    private ControlGestores controlGestores;
    public ArrayList<RegistroHorario> temporales;
    public String nivelActual;
    public ArrayList<Lecciones> lecciones;
    private TableRowSorter<TableModel> sorter;
    private ControlReportes controlReportes;
    public int ventanaOrigen; //variable me indica la ventana de origen en horarioModificar y horarioIngresar, para el boton regresar
    public int ventanaOrigenUsuarios;

    public Control() {
        lecciones = new ArrayList();
        temporales = new <RegistroHorario>ArrayList();
        interfaz = new Interfaz(this);
        controlGestores = new ControlGestores();
        lecciones = controlGestores.getGestorProfesor().obtenerLecciones();
        controlReportes = new ControlReportes();
        ventanaOrigen = 0;
        ventanaOrigenUsuarios = 0;
    }

    public boolean validarCedula(String cedula) {
        boolean correcto = false;
        if (!interfaz.getProfesorInsertar().jCheckBox2.isSelected()) {
            if (cedula.matches("^(\\d{1}-*?\\d{4}-*?\\d{4})$")) {
                correcto = true;
            }
        } else {
//            if (cedula.matches("")) {
            correcto = true;
//            }
        }
        return correcto;
    }

    public boolean validarNombreCompleto(String nombreApellido) {
        boolean correcto = false;
        if (nombreApellido.matches("^([A-Z]\\D{2,12})[ ]{1}([A-Z]\\D{2,12})[ ]{1}([A-Z]\\D{2,12})")) {
            correcto = true;
        }
        return correcto;
    }

    public boolean validarNombre(String nombreApellido) {
        boolean correcto = false;
        if (nombreApellido.matches("^([A-Z]\\D{2,12})")) {
            correcto = true;
        }
        return correcto;
    }

    public boolean validarCodigo(String codigo) {
        boolean correcto = false;
        if (codigo.matches("^\\d{1,3}")) {
            correcto = true;
        }
        return correcto;
    }

    public boolean validarTelefono(String telefono) {
        boolean correcto = false;
        if ((telefono.matches("^(\\d{2}-*?\\d{2}-*?\\d{2}-*?\\d{2})$"))) {
            correcto = true;
        }
        return correcto;
    }

    public boolean agregarAula() {
        boolean result = true;
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        Aula a = new Aula(interfaz.getAulaInsertar().jTextField1.getText(), interfaz.getAulaInsertar().jTextArea1.getText());
        for (int i = 0; i < listaAulas.size(); i++) {
            if (listaAulas.get(i).getIdAula().equals(a.getIdAula())) {
                return result = false;
            }
        }
        if (result == false) {
            JOptionPane.showMessageDialog(null, "El aula " + a.getIdAula() + " ya existe, Aula no ingresada", "ERROR", 0);
        } else {
            controlGestores.getGestorAula().registrarAula(a);
            result = true;
        }
        return result;
    }

    public String obtenerCedula(String cadena) {
        return cadena.split(" ")[0];
    }

    public boolean agregarHorarioAlterno() {
        return true;
    }

    public boolean agregarHorario() {
        return true;
    }

    public boolean agregarInformacionProfesor() {
        return true;
    }

    public boolean agregarMateria() {
        String nombre = String.valueOf(interfaz.getMateriaInsertar().jTextField1.getText());
        String idNivel = "";
        int cantLecc = Integer.parseInt(String.valueOf(interfaz.getMateriaInsertar().jSpinner1.getValue()));
        if (interfaz.getMateriaInsertar().jRadioButton1.isSelected()) {
            idNivel = "setimo";
        } else if (interfaz.getMateriaInsertar().jRadioButton2.isSelected()) {
            idNivel = "octavo";
        } else if (interfaz.getMateriaInsertar().jRadioButton3.isSelected()) {
            idNivel = "noveno";
        } else if (interfaz.getMateriaInsertar().jRadioButton4.isSelected()) {
            idNivel = "decimo";
        } else if (interfaz.getMateriaInsertar().jRadioButton5.isSelected()) {
            idNivel = "undecimo";
        }
        Materia m = new Materia(idNivel, nombre, cantLecc);
        return controlGestores.getGestorMateria().registroMateria(m);
    }

    public boolean agregarProfesor() {
        String cedula = String.valueOf(interfaz.getProfesorInsertar().jTextField1.getText());
        String nombre = String.valueOf(interfaz.getProfesorInsertar().jTextField2.getText());
        String apellido1 = String.valueOf(interfaz.getProfesorInsertar().jTextField3.getText());
        String apellido2 = String.valueOf(interfaz.getProfesorInsertar().jTextField4.getText());
        String direccion = String.valueOf(interfaz.getProfesorInsertar().jTextField5.getText());
        String telefono = String.valueOf(interfaz.getProfesorInsertar().jTextField6.getText());
        String grado = String.valueOf(interfaz.getProfesorInsertar().jComboBox1.getSelectedItem());
        String tipo = String.valueOf(interfaz.getProfesorInsertar().jComboBox2.getSelectedItem());
        String restriccion = String.valueOf(interfaz.getProfesorInsertar().jTextArea1.getText());
        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().ListarProfesores();
        ArrayList<String> materias = new ArrayList();
        for (int i = 0; i < interfaz.getProfesorInsertar().jList1.getSelectedValuesList().size(); i++) {
            materias.add(String.valueOf(interfaz.getProfesorInsertar().jList1.getSelectedValuesList().get(i)));
        }

        String nombreCompleto = nombre + " " + apellido1 + " " + apellido2;
        Profesor p = new Profesor(cedula, nombreCompleto, telefono, direccion, grado, restriccion, tipo);
        for (int i = 0; i < listaProfes.size(); i++) {
            if (listaProfes.get(i).getCedula().equals(cedula)) {
                return false;
            }
        }
        return controlGestores.getGestorProfesor().registroProfesor(p, materias);
    }

    public boolean verificar() {
        String user = interfaz.getLoggin().jTextField1.getText();
        String pass = interfaz.getLoggin().jPasswordField1.getText();
        Usuario u = controlGestores.getGestorUsuario().verificarUsuario(user, pass);
        if (u != null) {
            interfaz.setUsuarioActual(u);
            return true;
        } else {
            return false;
        }
    }

    public void llenarMateriasProfesor() {
        ArrayList<String> listaMaterias = controlGestores.getGestorMateria().ListarMateriasProfesor();
        final String materias[] = new String[listaMaterias.size()];
        for (int i = 0; i < listaMaterias.size(); i++) {
            materias[i] = listaMaterias.get(i);
        }
        interfaz.getProfesorInsertar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = materias;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

    public String cambiarNivel(String nivel) {
        String nc = "";
        if (nivel.equals("Sétimo")) {
            nc = "7";
        }
        if (nivel.equals("Octavo")) {
            nc = "8";
        }
        if (nivel.equals("Noveno")) {
            nc = "9";
        }
        if (nivel.equals("Décimo")) {
            nc = "10";
        }
        if (nivel.equals("Undécimo")) {
            nc = "11";
        }
        return nc;
    }

    public ArrayList<Grupo> grupoNivel(String nivel) {
        ArrayList<Grupo> listaGrupo = controlGestores.getGestorGrupo().ListarGrupos();
        ArrayList<Grupo> listaNivel = null;
        for (int i = 0; i <= listaGrupo.size(); i++) {
            if (listaGrupo.get(i).getIdNivel().equals(nivel)) {
                listaNivel.add(listaGrupo.get(i));
            }
        }
        return listaNivel;
    }

    public void llenarNivel(String nivel) {
        JTable aux = interfaz.getNivelConsultar().getjTable1();
        limpiarTabla(aux);
        String nc = cambiarNivel(nivel);
        ArrayList<Grupo> listaGrupo = controlGestores.getGestorGrupo().obtenerSeccion(nc);
        ArrayList<Materia> listaMateria = controlGestores.getGestorMateria().obtenerMaterias(nc);
        DefaultTableModel m = (DefaultTableModel) interfaz.getNivelConsultar().jTable1.getModel();

        final String grupos[] = new String[listaGrupo.size()];
        for (int i = 0; i < listaGrupo.size(); i++) {
            grupos[i] = listaGrupo.get(i).getSeccion();
        }
        interfaz.getNivelConsultar().getjList1().setModel(new javax.swing.AbstractListModel() {
            String[] strings = grupos;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }

        });
        try {
            while (m.getRowCount() > 0) {
                m.removeRow(0);
            }
            for (int i = 0; i < listaMateria.size(); i++) {
                m.insertRow(m.getRowCount(), new Object[]{listaMateria.get(i).getNombreMateria(),
                    listaMateria.get(i).getCantLecciones()});
            }
        } catch (Exception e) {
            System.out.println(e.getCause());
        }

    }

    public void llenarProfesores() {
        JTable aux = interfaz.getProfesorConsultar().jTable1;
        limpiarTabla(aux);
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().ListarProfesores();
        DefaultTableModel m = (DefaultTableModel) interfaz.getProfesorConsultar().jTable1.getModel();
        try {
            while (m.getRowCount() > 0) {
                m.removeRow(0);
            }
            for (int i = 0; i < listaProfesores.size(); i++) {
                m.insertRow(m.getRowCount(), new Object[]{listaProfesores.get(i).getCedula(),
                    listaProfesores.get(i).getNombre(), this.validaMaterias(listaProfesores, i),
                    this.validaNiveles(listaProfesores, i), listaProfesores.get(i).getTelefono(),
                    listaProfesores.get(i).getTipo(), validaLecciones(listaProfesores, i)});
            }
        } catch (Exception e) {
            System.out.println(e.getCause());
        }
    }

    public int validaLecciones(ArrayList<Profesor> listaProfesores, int i) {
        ArrayList<Lecciones> listaLecciones = controlGestores.getGestorProfesor().listarLeccionesDeProfesores();
        int leccion = 0;
        for (int j = 0; j < listaLecciones.size(); j++) {
            if (listaProfesores.get(i).getCedula().equals(listaLecciones.get(j).getCedula())) {
                leccion = listaLecciones.get(j).getCantLecciones();
            }
        }
        return leccion;
    }

    public String validaNiveles(ArrayList<Profesor> listaProfesores, int i) {
        String nivel = "";
        if (listaProfesores.get(i).getNiveles().size() <= 0 || listaProfesores.get(i).getNiveles() == null) {
            nivel = "No asignado";
        } else {
            String niveles = "";
            for (int j = 0; j < listaProfesores.get(i).getNiveles().size(); j++) {
                if (j == 0) {
                    niveles = listaProfesores.get(i).getNiveles().get(j).getIdNivel();
                } else {
                    niveles += ", ";
                    niveles += listaProfesores.get(i).getNiveles().get(j).getIdNivel();
                }
            }
            nivel = niveles;
        }
        return nivel;
    }

    public String validaMaterias(ArrayList<Profesor> listaProfesores, int i) {
        String materia = "";
        if (listaProfesores.get(i).getMaterias().size() <= 0 || listaProfesores.get(i).getMaterias() == null) {
            materia = "No asignado";
        } else {
            String materias = "";
            for (int j = 0; j < listaProfesores.get(i).getMaterias().size(); j++) {
                if (j == 0) {
                    materias = listaProfesores.get(i).getMaterias().get(j);
                } else {
                    materias += ", ";
                    materias += listaProfesores.get(i).getMaterias().get(j);
                }
            }
            materia = materias;
        }
        return materia;
    }

    public void llenarMaterias() {
        ArrayList<Materia> listaMaterias = controlGestores.getGestorMateria().ListarMaterias();
        DefaultTableModel m = (DefaultTableModel) interfaz.getMateriaConsultar().jTable1.getModel();
        try {
            while (m.getRowCount() > 0) {
                m.removeRow(0);
            }
            for (int i = 0; i < listaMaterias.size(); i++) {
                m.insertRow(m.getRowCount(), new Object[]{listaMaterias.get(i).getNombreMateria(),
                    listaMaterias.get(i).getCantLecciones(), listaMaterias.get(i).getNivel()});
            }
        } catch (Exception e) {
            System.out.println(e.getCause());
        }
    }

    public void llenarMateriasGrupoModificar() {
        String seccion = (String) interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0);
        Grupo g = controlGestores.getGestorGrupo().obtenerGrupo(seccion);
        ArrayList<Materia> listaMaterias = controlGestores.getGestorMateria().obtenerMaterias(g.getIdNivel());
        for (int i = 0; i < listaMaterias.size(); i++) {
            interfaz.getGrupoModificar().jTable1.setValueAt(listaMaterias.get(i).getNombreMateria(), i, 0);
            interfaz.getGrupoModificar().jTable1.setValueAt(listaMaterias.get(i).getCantLecciones(), i, 1);
        }
    }

    public void llenarMateriasProfesorModificar() {
        ArrayList<String> listaMaterias = controlGestores.getGestorMateria().ListarMateriasProfesor();
        final String materias[] = new String[listaMaterias.size()];
        for (int i = 0; i < listaMaterias.size(); i++) {
            materias[i] = listaMaterias.get(i);
        }
        interfaz.getProfeosorModificar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = materias;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

    public void llenarProfesoresGrupoModificar() {
        String seccion = (String) interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0);
        Grupo g = controlGestores.getGestorGrupo().obtenerGrupo(seccion);
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(g.getIdNivel());
        final String profesor[] = new String[listaProfesores.size()];

        ArrayList<Profesor> lista2 = controlGestores.getGestorProfesor().ListarProfesores(); // todos los profes, para q??

        for (int i = 0; i < listaProfesores.size(); i++) {
            String ced = listaProfesores.get(i).getCedula();
            for (int j = 0; j < lista2.size(); j++) {
                if (ced.equals(lista2.get(j).getCedula())) {
                    profesor[i] = lista2.get(j).getNombre();
                }
            }
        }
        interfaz.getGrupoModificar().jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = profesor;

            public int getSize() {
                return strings.length;
            }

            public Object getElementAt(int i) {
                return strings[i];
            }
        });
    }

    public boolean agregarUsuario() {
        boolean result = false;
        ArrayList<Usuario> listaUsuarios = controlGestores.getGestorUsuario().obtenerLista();
        String user = interfaz.getUsuarioInsertar().jTextField1.getText();
        String pass = interfaz.getUsuarioInsertar().jPasswordField1.getText();
        String cPass = interfaz.getUsuarioInsertar().jPasswordField2.getText();
        int permiso = interfaz.getUsuarioInsertar().jComboBox1.getSelectedIndex();
        if ((pass.compareTo(cPass) == 0) && (!pass.equals(""))) {
            Usuario u = new Usuario(user, pass, permiso);
            for (int i = 0; i < listaUsuarios.size(); i++) {
                if (listaUsuarios.get(i).getIdUsuario().equals(user)) {
                    return result;
                }
            }
            result = controlGestores.getGestorUsuario().registrarUsuario(u);
        }
        return result;
    }

    public void llenarUsuarios() {
        ArrayList<Usuario> listaUsuarios = controlGestores.getGestorUsuario().obtenerLista();
        DefaultTableModel m = (DefaultTableModel) interfaz.getUsuarioConsultar().jTable1.getModel();
        try {
            while (m.getRowCount() > 0) {
                m.removeRow(0);
            }
            for (int i = 0; i < listaUsuarios.size(); i++) {
                String prioridad = "";
                if (listaUsuarios.get(i).getPrioridad() == 0) {
                    prioridad = "Administrador";
                } else if (listaUsuarios.get(i).getPrioridad() == 1) {
                    prioridad = "Creador";
                } else if (listaUsuarios.get(i).getPrioridad() == 2) {
                    prioridad = "Bibliotecario";
                } else {
                    prioridad = "Aprueba";
                }
                m.insertRow(m.getRowCount(), new Object[]{listaUsuarios.get(i).getIdUsuario(),
                    prioridad, listaUsuarios.get(i).getClave()});
            }
        } catch (Exception e) {
            System.out.println(e.getCause());
        }
    }

    public void llenarUsuarioModificar() {
        interfaz.getUsuarioModificar().jButton1.setEnabled(true);
        if (interfaz.getUsuarioConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0) != null) {
                String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getUsuarioModificar().jTextField1.setText(usuario);
            } else {
                interfaz.getUsuarioModificar().jTextField1.setText("Usuario Invalido");
                interfaz.getUsuarioModificar().jButton1.setEnabled(false);
            }
        } else {
            interfaz.getUsuarioModificar().jTextField1.setText("Usuario Invalido");
            interfaz.getUsuarioModificar().jButton1.setEnabled(false);
        }
    }

    public void llenarMateriaModificar() {
        interfaz.getMateriaModificar().jButton1.setEnabled(true);
        if (interfaz.getMateriaConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0) != null) {
                String materia = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getMateriaModificar().jTextField1.setText(materia);
            } else {
                interfaz.getMateriaModificar().jTextField1.setText("Materia Invalida");
                interfaz.getMateriaModificar().jButton1.setEnabled(false);
            }
        } else {
            interfaz.getMateriaModificar().jTextField1.setText("Materia Invalida");
            interfaz.getMateriaModificar().jButton1.setEnabled(false);
        }
    }

    public boolean materiaModificar() {
        boolean bandera = false;
        String materia = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 0));
        String nivel = String.valueOf(interfaz.getMateriaConsultar().jTable1.getValueAt(interfaz.getMateriaConsultar().jTable1.getSelectedRow(), 2));
        int cantLecciones = (int) interfaz.getMateriaModificar().jSpinner1.getValue();
        bandera = controlGestores.getGestorMateria().modificarMateria(materia, nivel, cantLecciones);
        JOptionPane.showMessageDialog(null, "La materia ha sido modificada", "EXITO", 1);
        return bandera;
    }

    public void llenarGrupoModificar() {
        interfaz.getGrupoModificar().jButton2.setEnabled(true);
        if (interfaz.getGrupoConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0) != null) {
                String seccion = String.valueOf(interfaz.getGrupoConsultar().jTable1.getValueAt(interfaz.getGrupoConsultar().jTable1.getSelectedRow(), 0));
                interfaz.getGrupoModificar().jLabel5.setText(seccion);
            } else {
                interfaz.getGrupoModificar().jLabel5.setText("Sección Invalida");
                interfaz.getGrupoModificar().jButton2.setEnabled(false);
            }
        } else {
            interfaz.getGrupoModificar().jLabel5.setText("Sección Invalida");
            interfaz.getGrupoModificar().jButton2.setEnabled(false);
        }
    }

    public boolean eliminarSeccion() {
        boolean bandera = false;
        String nivel = String.valueOf(interfaz.getNivelConsultar().jComboBox1.getSelectedItem());
        String cn = cambiarNivel(nivel);
        Grupo g = this.obtenerMayorGrupo(cn);
        bandera = controlGestores.getGestorGrupo().eliminarGrupo(g.getSeccion());
        return bandera;
    }

    public Grupo obtenerMayorGrupo(String nivel) {
        Grupo grupo = new Grupo();
        int pos = 0;
        int valor = 0;
        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().obtenerSeccion(nivel);
        ArrayList<String[]> listaAux = new <String[]>ArrayList();
        for (int i = 0; i < listaGrupos.size(); i++) {
            listaAux.add(listaGrupos.get(i).getSeccion().split("-"));
        }
        for (int i = 0; i < listaAux.size(); i++) {
            if (Integer.parseInt(listaAux.get(i)[1]) > valor) {
                valor = Integer.parseInt(listaAux.get(i)[1]);
                pos = i;
            }
        }
        grupo = listaGrupos.get(pos);
        //JOptionPane.showMessageDialog(null, grupo.getSeccion());
        return grupo;
    }

    public void llenarComboBoxProfModifiar() {
        String cedula = interfaz.getProfeosorModificar().jTextField1.getText();
        Profesor p = controlGestores.getGestorProfesor().obtenerProfesor(cedula);
        if (p.getTipo().equals("Propiedad")) {
            interfaz.getProfeosorModificar().jComboBox2.setSelectedIndex(1);
        } else {
            interfaz.getProfeosorModificar().jComboBox2.setSelectedIndex(0);
        }
        if (p.getGradoAcademico().equals("MT1")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(0);
        }
        if (p.getGradoAcademico().equals("MT2")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(1);
        }
        if (p.getGradoAcademico().equals("MT3")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(2);
        }
        if (p.getGradoAcademico().equals("MT4")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(3);
        }
        if (p.getGradoAcademico().equals("MT5")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(4);
        }
        if (p.getGradoAcademico().equals("MT6")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(5);
        }
        if (p.getGradoAcademico().equals("VT1")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(6);
        }
        if (p.getGradoAcademico().equals("VT2")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(7);
        }
        if (p.getGradoAcademico().equals("VT3")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(8);
        }
        if (p.getGradoAcademico().equals("VT4")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(9);
        }
        if (p.getGradoAcademico().equals("VT5")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(10);
        }
        if (p.getGradoAcademico().equals("VT6")) {
            interfaz.getProfeosorModificar().jComboBox1.setSelectedIndex(11);
        }
    }

    public void llenarProfesorModificar() {
        ArrayList<Profesor> listaProfesores = controlGestores.getGestorProfesor().ListarProfesores();
        String nombre = "";
        String direccion = "";
        String telefono = "";
        String restriccion = "";
        String lecciones = "";
        interfaz.getProfeosorModificar().jButton2.setEnabled(true);
        if (interfaz.getProfesorConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0) != null) {
                String cedula = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
                for (int i = 0; i < listaProfesores.size(); i++) {
                    if (cedula.equals(listaProfesores.get(i).getCedula())) {
                        nombre = listaProfesores.get(i).getNombre();
                        direccion = listaProfesores.get(i).getDireccion();
                        telefono = listaProfesores.get(i).getTelefono();
                        restriccion = listaProfesores.get(i).getRestriccion();
                    }
                }
                interfaz.getProfeosorModificar().jTextField1.setText(cedula);
                interfaz.getProfeosorModificar().jTextField2.setText(nombre);
                interfaz.getProfeosorModificar().jTextField5.setText(direccion);
                interfaz.getProfeosorModificar().jTextField6.setText(telefono);
                interfaz.getProfeosorModificar().jTextArea1.setText(restriccion);
            } else {
                interfaz.getProfeosorModificar().jTextField1.setText("Profesor Invalido");
                interfaz.getProfeosorModificar().jButton2.setEnabled(false);
            }
        } else {
            interfaz.getProfeosorModificar().jTextField1.setText("Profesor Invalida");
            interfaz.getProfeosorModificar().jButton2.setEnabled(false);
        }
    }

    public boolean profesorEliminar() {
        boolean bandera = false;
        if (interfaz.getProfesorConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0) != null) {
                String profesor = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
                controlGestores.getGestorProfesor().borrarMateriaProfesor(profesor);
                controlGestores.getGestorProfesor().borrarLeccionesProfesor(profesor);
                controlGestores.getGestorProfesor().borrarNivelesProfesor(profesor);
                controlGestores.getGestorProfesor().borrarGruposProfesor(profesor);
                bandera = controlGestores.getGestorProfesor().eliminarProfesor(profesor);
                JOptionPane.showMessageDialog(null, "El profesor: " + profesor + " fue eliminado.", "Confirmación", JOptionPane.OK_OPTION);
            } else {
                JOptionPane.showMessageDialog(null, "No seleccionó ningún profesor", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(null, "No seleccionó ningún profesor", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
        }
        return bandera;
    }

    public boolean profesorModificar() {
        boolean bandera = false;
        String cedulaOriginal = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
        String cedula = interfaz.getProfeosorModificar().jTextField1.getText();
        String nombre = interfaz.getProfeosorModificar().jTextField2.getText();
        String direccion = interfaz.getProfeosorModificar().jTextField5.getText();
        String tel = interfaz.getProfeosorModificar().jTextField6.getText();
        String cat = String.valueOf(interfaz.getProfeosorModificar().jComboBox1.getSelectedItem());
        String tipo = String.valueOf(interfaz.getProfeosorModificar().jComboBox2.getSelectedItem());
        String restric = interfaz.getProfeosorModificar().jTextArea1.getText();
        Profesor p = new Profesor(cedula, nombre, tel, direccion, cat, restric, tipo);

        controlGestores.getGestorProfesor().modificarCedulaMateriaProfesor(cedulaOriginal, cedula);
        controlGestores.getGestorProfesor().modificarCedulaGruposProfesor(cedulaOriginal, cedula);
        controlGestores.getGestorProfesor().modificarCedulaLeccionesProfesor(cedulaOriginal, cedula);
        controlGestores.getGestorProfesor().modificarCedulaNivelesProfesor(cedulaOriginal, cedula);
        bandera = controlGestores.getGestorProfesor().modificarProfesor(cedulaOriginal, p);
        return bandera;
    }

    public boolean modificarMateriasProfesor() {
        boolean bandera = false;
        ArrayList<String> materias = new ArrayList();
        String cedula = String.valueOf(interfaz.getProfesorConsultar().jTable1.getValueAt(interfaz.getProfesorConsultar().jTable1.getSelectedRow(), 0));
        Profesor p = new Profesor(cedula, "", "", "", "", "", "");
        if (interfaz.getProfeosorModificar().jList1.getSelectedValue() != null) {
            for (int i = 0; i < interfaz.getProfeosorModificar().jList1.getSelectedValuesList().size(); i++) {
                materias.add(String.valueOf(interfaz.getProfeosorModificar().jList1.getSelectedValuesList().get(i)));
            }
            bandera = controlGestores.getGestorProfesor().modificarMateriasProfesor(p, materias);
        }

        bandera = false;
        return bandera;
    }

    public boolean usuarioModificar() {
        boolean bandera = false;
        String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
        String pass = interfaz.getUsuarioModificar().jPasswordField1.getText();
        String cPass = interfaz.getUsuarioModificar().jPasswordField2.getText();
        if ((pass.compareTo(cPass) == 0) && (!pass.equals(""))) {
            bandera = controlGestores.getGestorUsuario().modificarUsuario(usuario, pass);
        }
        return bandera;
    }

    public boolean grupoModificar() {
        boolean bandera = false;
        String seccion = interfaz.getGrupoModificar().jLabel5.getText();//traigo la seccion
        String nombreProf = String.valueOf(interfaz.getGrupoModificar().jList1.getSelectedValue());//traigo el nombre seleccionado

        Profesor p = controlGestores.getGestorProfesor().obtenerProfesorNombre(nombreProf);//traigo el PROFESOR

        // verificar si tiene profesor guia
        if (controlGestores.getGestorGrupo().verificarGuia(seccion)) {
            int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este grupo ya tien un profesor asignado,¿Desea cambiarlo?", "Seleccione una opcion", 1);
            if (JOptionPane.OK_OPTION == confirmado) {
                bandera = controlGestores.getGestorGrupo().AsignarProfesorGuia(seccion, p.getCedula());
            } else {
                return false;
            }
        } else {
            bandera = controlGestores.getGestorGrupo().AsignarProfesorGuia(seccion, p.getCedula());
        }
        return bandera;
    }

    public boolean usuarioEliminar() {
        boolean bandera = false;
        if (interfaz.getUsuarioConsultar().jTable1.getSelectedRowCount() > 0) {
            if (interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0) != null) {
                String usuario = String.valueOf(interfaz.getUsuarioConsultar().jTable1.getValueAt(interfaz.getUsuarioConsultar().jTable1.getSelectedRow(), 0));
                if (!usuario.equals(interfaz.getUsuarioActual().getIdUsuario())) {
                    bandera = controlGestores.getGestorUsuario().eliminarUsuario(usuario);
                    JOptionPane.showMessageDialog(null, "El usuario: " + usuario + " fue eliminado.", "Confirmación", JOptionPane.OK_OPTION);
                } else {
                    JOptionPane.showMessageDialog(null, "No se puede eliminar el usuario seleccionado", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null, "No seleccionó ningún usuario", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(null, "No seleccionó ningún usuario", "Error al eliminar", JOptionPane.ERROR_MESSAGE);
        }
        return bandera;
    }

    public void llenarGrupos(String nivel) {
        String cn = cambiarNivel(nivel);
        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().obtenerSeccion(cn);
        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().ListarProfesores();
        DefaultTableModel m = (DefaultTableModel) interfaz.getGrupoConsultar().jTable1.getModel();
        if (listaGrupos != null) {
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int i = 0; i < listaGrupos.size(); i++) {
                    m.insertRow(m.getRowCount(), new Object[]{listaGrupos.get(i).getSeccion(),
                        validaProfeGuia(listaGrupos, i)});
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        }

    }

    public void limpiarTabla(JTable aux) {
        int fila = aux.getRowCount();
        int col = aux.getColumnCount();
        for (int i = 0; i < fila; i++) {
            for (int j = 0; j < col; j++) {
                aux.setValueAt("", i, j);
            }
        }
    }

//    public void llenarGruposConsultar() {
//        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().ListarProfesores();
//        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().ListarGrupos();//obtenerGrupoProfeGuia(listaProfes);
//
//        for (int i = 0; i < listaGrupos.size(); i++) {
//            interfaz.getGrupoConsultar().jTable1.setValueAt(listaGrupos.get(i).getSeccion(), i, 0);
//            if (listaGrupos.get(i).getProfesorGuia() != null) {
//                for (int j = 0; j < listaProfes.size(); j++) {
//                    if (listaProfes.get(j).getCedula().equals(listaGrupos.get(i).getProfesorGuia())) {
//                        interfaz.getGrupoConsultar().jTable1.setValueAt(listaProfes.get(j).getNombre(), i, 1);
//                    }
//                }
//            } else {
//                interfaz.getGrupoConsultar().jTable1.setValueAt("No asignado", i, 1);
//            }
//        }
//    }
    public void llenarGruposConsultar() {
        DefaultTableModel m = (DefaultTableModel) interfaz.getGrupoConsultar().jTable1.getModel();
        ArrayList<Grupo> listaGrupos = controlGestores.getGestorGrupo().ListarGrupos();//obtenerGrupoProfeGuia(listaProfes);
        try {
            while (m.getRowCount() > 0) {
                m.removeRow(0);
            }
            for (int i = 0; i < listaGrupos.size(); i++) {
                m.insertRow(m.getRowCount(), new Object[]{listaGrupos.get(i).getSeccion(),
                    validaProfeGuia(listaGrupos, i)});
            }
        } catch (Exception e) {
            System.out.println(e.getCause());
        }
    }

    public String validaProfeGuia(ArrayList<Grupo> listaGrupos, int i) {
        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().ListarProfesores();
        String profe = "";
        if (listaGrupos.get(i).getProfesorGuia() != null) {
            for (int j = 0; j < listaProfes.size(); j++) {
                if (listaProfes.get(j).getCedula().equals(listaGrupos.get(i).getProfesorGuia())) {
                    profe = listaProfes.get(j).getNombre();
                }
            }
        } else {
            profe = "No asignado";
        }
        return profe;
    }

    public boolean agregarUnGrupo() {
        String idNivel = "";

        if (interfaz.getGrupoInsertar().jRadioButton1.isSelected()) {
            idNivel = "7";
        } else if (interfaz.getGrupoInsertar().jRadioButton2.isSelected()) {
            idNivel = "8";
        } else if (interfaz.getGrupoInsertar().jRadioButton3.isSelected()) {
            idNivel = "9";
        } else if (interfaz.getGrupoInsertar().jRadioButton4.isSelected()) {
            idNivel = "10";
        } else if (interfaz.getGrupoInsertar().jRadioButton5.isSelected()) {
            idNivel = "11";
        }
        if (idNivel.equals("")) {
            JOptionPane.showMessageDialog(interfaz, "Debe seleccionar un nivel", " ", 1);
            return false;
        }
        Grupo g = null;
        ArrayList<Grupo> grupos = controlGestores.getGestorGrupo().obtenerSeccion(idNivel);
        if (grupos.isEmpty()) {
            g = new Grupo(idNivel + "-" + "1", idNivel);
        } else {
            int numSeccion = grupos.size() + 1;
            String nuevaSeccion = idNivel + "-" + numSeccion;
            g = new Grupo(nuevaSeccion, idNivel);
        }
        controlGestores.getGestorGrupo().actualizarNivel(idNivel, controlGestores.getGestorNivel().obtenerCantidadNiveles(idNivel) + 1);
        JOptionPane.showMessageDialog(interfaz, "Se agrego el grupo correctamente", "Exito", 1);
        interfaz.getGrupoInsertar().jLabel5.setText("Cantidad de secciones actuales: "
                + controlGestores.getGestorGrupo().cantidadDeSecciones(idNivel));
        return controlGestores.getGestorGrupo().registroUnGrupo(g);
    }

    public boolean agregarGrupos(int cantidad) {
        String idNivel = "";
        String seccion = "";
        if (interfaz.getGrupoInsertar().jRadioButton1.isSelected()) {
            idNivel = "7";
        } else if (interfaz.getGrupoInsertar().jRadioButton2.isSelected()) {
            idNivel = "8";
        } else if (interfaz.getGrupoInsertar().jRadioButton3.isSelected()) {
            idNivel = "9";
        } else if (interfaz.getGrupoInsertar().jRadioButton4.isSelected()) {
            idNivel = "10";
        } else if (interfaz.getGrupoInsertar().jRadioButton5.isSelected()) {
            idNivel = "11";
        }
        if (idNivel.equals("")) {
            JOptionPane.showMessageDialog(interfaz, "Debe seleccionar un nivel", " ", 1);
            return false;
        }

        if (controlGestores.getGestorGrupo().obtenerSeccion(idNivel).size() > 0) {
            //aca es si a la seccion ya se le han asignado grupos
            int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este nivel ya tiene grupos registrados. ¿Desea borrarlos y crear nuevos grupos?", "Seleccione una opcion", 1);
            if (JOptionPane.OK_OPTION == confirmado) {
                // tengo q hacer un alter table en nivel y crear nuevos grupos
                controlGestores.getGestorGrupo().borrarGruposDeNivel(idNivel);
                JOptionPane.showMessageDialog(interfaz, "Se modificaron los grupos correctamente", "Exito", 1);
                controlGestores.getGestorGrupo().actualizarNivel(idNivel, cantidad);
                return controlGestores.getGestorGrupo().registroGrupo(idNivel, cantidad);

            } else {
                return false;
            }
        }
        controlGestores.getGestorGrupo().actualizarNivel(idNivel, cantidad);
        JOptionPane.showMessageDialog(interfaz, "Se agregaron los grupos correctamente", "Exito", 1);
        return controlGestores.getGestorGrupo().registroGrupo(idNivel, cantidad);
    }

    public void llenarAulas() {
        if (controlGestores.getGestorRegistro().ListarAulas().size() > 0) {
            DefaultTableModel m = (DefaultTableModel) interfaz.getAulaConsultar().jTable1.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (RegistroHorario rh : controlGestores.getGestorRegistro().ListarAulas()) {
                    m.insertRow(m.getRowCount(), new Object[]{rh.getIdAula(), rh.getDia(),
                        rh.getHora(), controlGestores.getGestorProfesor().obtenerProfesor(rh.getCedula()).getNombre(), rh.getSeccion()});
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        }
    }

    public boolean asignarProfesor() {
        boolean resultado = false;
        // no se agrego nada
        int cantLecciones = ((int) (interfaz.getProfesorAsignar().jSpinner1.getValue()));
        String pCedula = ((String) (interfaz.getProfesorAsignar().getCedulaProfeL().getText()));
        if (cantLecciones != 0) {
            // si ya tiene entra en este if
            ArrayList<Lecciones> lec = controlGestores.getGestorProfesor().obtenerLeccionesDeProfesor(controlGestores.getGestorProfesor().obtenerProfesor(pCedula));
            if (lec.size() > 0) {
                int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este profesor ya tiene lecciones asignadas,¿Desea cambiarlas?", "Seleccione una opcion", 1);
                if (JOptionPane.OK_OPTION == confirmado) {
                    controlGestores.getGestorProfesor().ModificarLeccionesAlProfesor(pCedula, cantLecciones);
                    resultado = true;
                }
            } else {
                //si no entra en este otro
                controlGestores.getGestorProfesor().agregarCantLeccionesProfesor(pCedula, cantLecciones);
                resultado = true;
            }
        }
        //con esto asigno niveles
        if (!interfaz.getProfesorAsignar().jList1.getSelectedValuesList().isEmpty()) {
            //agarra los niveles
            ArrayList<Nivel> niveles = new ArrayList();
            for (int i = 0; i < interfaz.getProfesorAsignar().jList1.getSelectedValuesList().size(); i++) {
                String nivel = String.valueOf(interfaz.getProfesorAsignar().jList1.getSelectedValuesList().get(i));
                Nivel n = controlGestores.getGestorNivel().obtenerNivel(this.cambiarNivel(nivel), "2014"); // esto hay q cambiarlo
                niveles.add(n);
            }
            //si ya tiene niveles
            if (controlGestores.getGestorProfesor().obtenerNivelesDeProfesor(controlGestores.getGestorProfesor().obtenerProfesor(pCedula)).size() > 0) {
                int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este profesor ya tiene niveles asignados,¿Desea cambiarlos?", "Seleccione una opcion", 1);
                if (JOptionPane.OK_OPTION == confirmado) {
                    controlGestores.getGestorProfesor().borrarNivelesProfesor(pCedula);
                    controlGestores.getGestorProfesor().agregarNivelesAlProfesor(controlGestores.getGestorProfesor().obtenerProfesor(pCedula), niveles);
                    resultado = true;
                }

            } else {
                controlGestores.getGestorProfesor().agregarNivelesAlProfesor(controlGestores.getGestorProfesor().obtenerProfesor(pCedula), niveles);
                resultado = true;
            }

        }
        return resultado;
    }

    public void llenarProfesorAsignar() {

        int numFila = interfaz.getProfesorConsultar().jTable1.getSelectedRow();
        String pCedula = ((String) (interfaz.getProfesorConsultar().jTable1.getValueAt(numFila, 0)));
        String pNombre = ((String) (interfaz.getProfesorConsultar().jTable1.getValueAt(numFila, 1)));
        setLabelsAsigProfe(pNombre, pCedula);
    }

    public void ImprimirProfesoresProNivel(String nivel) {
        this.nivelActual = nivel;//variable universal para saber en q nivel de tab estamos
        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(nivel);
        Profesor p = null;
        if (nivel.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            }catch (Exception e) {
                System.out.println(e.getCause());
                
            }
        } else if (nivel.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
             try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else if (nivel.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        }
        // aca si va a hacer falta crear un segunda linea con el profesor para la materia
    }

    public void ImprimirProfesoresProNivelAlterno(String nivel) {
        this.nivelActual = nivel;//variable universal para saber en q nivel de tab estamos
        ArrayList<Profesor> listaProfes = controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(nivel);
        Profesor p = null;
        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(interfaz.getHorarioAlternoInsertar().setimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(interfaz.getHorarioAlternoInsertar().octavo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(interfaz.getHorarioAlternoInsertar().noveno.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(interfaz.getHorarioAlternoInsertar().decimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(interfaz.getHorarioAlternoInsertar().undecimo.getSelectedIndex());
            DefaultTableModel m = (DefaultTableModel) hi1.profesores.getModel();
            try {
                while (m.getRowCount() > 0) {
                    m.removeRow(0);
                }
                for (int k = 0; k < listaProfes.size(); k++) {
                    p = listaProfes.get(k);
                    String nomb = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
                    int j = 0;
                    while (j < p.getMaterias().size()) {
                        m.insertRow(m.getRowCount(), new Object[]{nomb,
                            p.getMaterias().get(j)});
                        j++;
                    }
                }
            } catch (Exception e) {
                System.out.println(e.getCause());
            }
        }            // aca si va a hacer falta crear un segunda linea con el profesor para la materia
    }

    public void ImprimirProfesoresProNivelAux(String nivel) {
        int con = 0;
        this.nivelActual = nivel;//variable universal para saber en q nivel de tab estamos

        for (Profesor p : controlGestores.getGestorProfesor().obtenerListaDeProfesXNivel(nivel)) {
            String nombre = controlGestores.getGestorProfesor().obtenerProfesor(p.getCedula()).getNombre();
            if (nivel.equals("7")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(interfaz.getHorarioAlternoInsertar().setimo.getSelectedIndex());
                for (int i = 0; i < p.getMaterias().size(); i++) {
                    hi1.getProfesores().setValueAt(nombre, con, 0);
                    hi1.getProfesores().setValueAt(p.getMaterias().get(i), con, 1);
                    con++;
                }
            } else if (nivel.equals("8")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(interfaz.getHorarioAlternoInsertar().octavo.getSelectedIndex());
                for (int i = 0; i < p.getMaterias().size(); i++) {
                    hi1.getProfesores().setValueAt(nombre, con, 0);
                    hi1.getProfesores().setValueAt(p.getMaterias().get(i), con, 1);
                    con++;
                }
            } else if (nivel.equals("9")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(interfaz.getHorarioAlternoInsertar().noveno.getSelectedIndex());
                for (int i = 0; i < p.getMaterias().size(); i++) {
                    hi1.getProfesores().setValueAt(nombre, con, 0);
                    hi1.getProfesores().setValueAt(p.getMaterias().get(i), con, 1);
                    con++;
                }
            } else if (nivel.equals("10")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(interfaz.getHorarioAlternoInsertar().decimo.getSelectedIndex());
                for (int i = 0; i < p.getMaterias().size(); i++) {
                    hi1.getProfesores().setValueAt(nombre, con, 0);
                    hi1.getProfesores().setValueAt(p.getMaterias().get(i), con, 1);
                    con++;
                }
            } else if (nivel.equals("11")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(interfaz.getHorarioAlternoInsertar().undecimo.getSelectedIndex());
                for (int i = 0; i < p.getMaterias().size(); i++) {
                    hi1.getProfesores().setValueAt(nombre, con, 0);
                    hi1.getProfesores().setValueAt(p.getMaterias().get(i), con, 1);
                    con++;
                }
            }
        }

    }

    public void imprimirAulas(String nivel) {
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        final String aulas[] = new String[listaAulas.size()];
        for (int i = 0; i < listaAulas.size(); i++) {
            aulas[i] = listaAulas.get(i).getIdAula();
        }
        if (nivel.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        }
    }

    public void imprimirAulasAlterno(String nivel) {
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        final String aulas[] = new String[listaAulas.size()];
        for (int i = 0; i < listaAulas.size(); i++) {
            aulas[i] = listaAulas.get(i).getIdAula();
        }
        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(interfaz.getHorarioAlternoInsertar().setimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(interfaz.getHorarioAlternoInsertar().octavo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(interfaz.getHorarioAlternoInsertar().noveno.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(interfaz.getHorarioAlternoInsertar().decimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(interfaz.getHorarioAlternoInsertar().undecimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        }
    }

    public void imprimirAulasAux(String nivel) {
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        final String aulas[] = new String[listaAulas.size()];
        for (int i = 0; i < listaAulas.size(); i++) {
            aulas[i] = listaAulas.get(i).getIdAula();
        }
        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            hi1.getjList1().setModel(new javax.swing.AbstractListModel() {
                String[] strings = aulas;

                public int getSize() {
                    return strings.length;
                }

                public Object getElementAt(int i) {
                    return strings[i];
                }
            });
        }
    }

    public void ImprimirLeccionesAlAgregarProfesores() {

        String profe = null; //aca se guarda el nombre del profe para poder buscarlo en el gestor 
        Profesor p = null;
        if (this.nivelActual.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            profe = (String) (hi1.profesores.getValueAt(hi1.profesores.getSelectedRow(), 0));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor no posee restricción.");
            }
        } else if (this.nivelActual.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            profe = (String) (hi1.profesores.getValueAt(hi1.profesores.getSelectedRow(), 0));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            profe = (String) (hi1.profesores.getValueAt(hi1.profesores.getSelectedRow(), 0));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            profe = (String) (hi1.profesores.getValueAt(hi1.profesores.getSelectedRow(), 0));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            profe = (String) (hi1.profesores.getValueAt(hi1.profesores.getSelectedRow(), 0));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        }
    }

    public void ImprimirLeccionesAlEliminarProfesores() {

        String profe = null; //aca se guarda el nombre del profe para poder buscarlo en el gestor 
        Profesor p = null;
        if (this.nivelActual.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            profe = (String) (hi1.jTable2.getValueAt(hi1.jTable2.getSelectedRow(), hi1.jTable2.getSelectedColumn()));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe.split("-")[0]);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe.split("-")[0]);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor no posee restricción.");
            }
        } else if (this.nivelActual.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            profe = (String) (hi1.jTable2.getValueAt(hi1.jTable2.getSelectedRow(), hi1.jTable2.getSelectedColumn()));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe.split("-")[0]);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe.split("-")[0]);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            profe = (String) (hi1.jTable2.getValueAt(hi1.jTable2.getSelectedRow(), hi1.jTable2.getSelectedColumn()));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe.split("-")[0]);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe.split("-")[0]);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            profe = (String) (hi1.jTable2.getValueAt(hi1.jTable2.getSelectedRow(), hi1.jTable2.getSelectedColumn()));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe.split("-")[0]);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe.split("-")[0]);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        } else if (this.nivelActual.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            profe = (String) (hi1.jTable2.getValueAt(hi1.jTable2.getSelectedRow(), hi1.jTable2.getSelectedColumn()));
            if (profe != null) {
                p = controlGestores.getGestorProfesor().obtenerProfesorNombre(profe.split("-")[0]);
                for (int i = 0; i < lecciones.size(); i++) {
                    if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                        hi1.jLabel2.setText(profe.split("-")[0]);
                        hi1.jLabel4.setText(String.valueOf(lecciones.get(i).getCantLecciones()));
                        hi1.jLabel6.setText(String.valueOf(lecciones.get(i).getLeccionesRestantes()));
                        if (p.getRestriccion() != null) {
                            hi1.jTextArea.setText(p.getRestriccion());
                        }
                    }
                }
//                Lecciones l = controlGestores.getGestorProfesor().obtenerLeccionesProfesor(p);
            } else {
                hi1.jLabel2.setText("Profesor invalido");
                hi1.jLabel4.setText("0");
                hi1.jLabel6.setText("0");
                hi1.jTextArea.setText("El profesor " + p.getNombre() + " no posee restricción.");
            }
        }
    }

    public boolean restarLecciones(String nombreProfe) {
        boolean bandera = false;
        Profesor p = controlGestores.getGestorProfesor().obtenerProfesorNombre(nombreProfe);
        for (int i = 0; i < lecciones.size(); i++) {
            if (lecciones.get(i).getCedula().equals(p.getCedula()) && lecciones.get(i).getLeccionesRestantes() > 0) {
                lecciones.get(i).setLeccionesRestantes(lecciones.get(i).getLeccionesRestantes() - 1);
                return true;
            }
        }
        JOptionPane.showMessageDialog(null, "El profesor no posee suficientes lecciones", "ERROR", 1);
        return bandera;
    }

    public boolean sumarLecciones(String cedProfe) {
        boolean bandera = false;
        Profesor p = controlGestores.getGestorProfesor().obtenerProfesor(cedProfe);
        for (int i = 0; i < lecciones.size(); i++) {
            if (lecciones.get(i).getCedula().equals(p.getCedula())) {
                lecciones.get(i).setLeccionesRestantes(lecciones.get(i).getLeccionesRestantes() + 1);
                ImprimirLeccionesAlEliminarProfesores();
                return true;
            }
        }
        JOptionPane.showMessageDialog(null, "El profesor no posee lecciones asignadas", "ERROR", 1);
        return bandera;
    }

    public ArrayList<Lecciones> listLeccionesTemp() {
        ArrayList<Lecciones> l = controlGestores.getGestorProfesor().obtenerLeccionesDeProfesor(null);

        return l;
    }

    public String convertidorNiveles(String pNivel) {
        String nivel = "";
        if (pNivel.equals("7")) {
            nivel = "setimo";
        }
        if (pNivel.equals("8")) {
            nivel = "octavo";
        }
        if (pNivel.equals("9")) {
            nivel = "noveno";
        }
        if (pNivel.equals("10")) {
            nivel = "decimo";
        }
        if (pNivel.equals("11")) {
            nivel = "undecimo";
        }
        return nivel;
    }

    public void setLabelsAsigProfe(String pNombre, String pCed) {
        interfaz.getProfesorAsignar().getNombreProfeL().setText(pNombre);
        interfaz.getProfesorAsignar().getCedulaProfeL().setText(pCed);
    }

    // IMPORTANTE!!! ESTOS METODOS SERAN DIFERENTES COMO EL D ARRIBA PORQ EL AULA SE LLENA DEL HORARIOREGISTRO
    public void llenarAulaConsultar() {
        ArrayList<Aula> listaAulas = controlGestores.getGestorAula().ListarAulas();
        interfaz.getAulaConsultar().getjTextField1().setText("");
        limpiarTablaAulaConsult();
        for (int i = 0; i < listaAulas.size(); i++) {
            interfaz.getAulaConsultar().getjTable1().setValueAt(listaAulas.get(i).getIdAula(), i, 0);
        }
    }

    public void limpiarTablaAulaConsult() {
        for (int i = 0; i < interfaz.getAulaConsultar().getjTable1().getRowCount(); i++) {
            interfaz.getAulaConsultar().getjTable1().setValueAt("", i, 0);
        }
    }

    public void limpiarTablaUsuarioConsultar() {
        for (int i = 0; i < interfaz.getUsuarioConsultar().jTable1.getRowCount(); i++) {
            interfaz.getUsuarioConsultar().jTable1.setValueAt("", i, 0);
            interfaz.getUsuarioConsultar().jTable1.setValueAt("", i, 1);
            interfaz.getUsuarioConsultar().jTable1.setValueAt("", i, 2);
        }
    }

    public String getAnnio() {
        Calendar c = Calendar.getInstance();
        String annio = Integer.toString(c.get(Calendar.YEAR));
        return annio;
    }

    public void eliminarDeHorario(int fila, int columna, HorarioInsertar1 h) {
        ArrayList<RegistroHorario> toRemove = new ArrayList<RegistroHorario>();
        if (ventanaOrigen == 1) {
            h.jTable2.setValueAt(null, fila, columna);
            for (RegistroHorario rh : temporales) {
                if (rh.getAnno().equals(this.getAnnio()) && rh.getSeccion().equals(this.obtenerSeccion())
                        && Integer.parseInt(getDiaInverso(rh.getDia())) == columna
                        && Integer.parseInt(this.getHoraInverso(rh.getHora())) == fila) {
                    sumarLecciones(rh.getCedula());
                    toRemove.add(rh);
                }
            }
            temporales.removeAll(toRemove);

        }
        if (ventanaOrigen == 2) {
            if (JOptionPane.showConfirmDialog(null, "¿Seguro(a) que desea eliminar este campo?", "?", 0) == 0) {
                controlGestores.getGestorRegistro().borrarRegistro(obtenerSeccion(), getAnnio(), String.valueOf(fila) + "-" + String.valueOf(columna));
                h.jTable2.setValueAt(null, fila, columna);
            }
        }

    }

    public void cargarHorariodeSeccion(String nivel) {
        this.nivelActual = nivel;
        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(this.obtenerSeccion(), this.getAnnio());
        for (RegistroHorario r : registros) {

            if (nivelActual.equals("7")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
            RegistroHorario r1 = r;
            r1.setDia(this.getDia(Integer.parseInt(r.getDia())));
            r1.setHora(this.getHora(Integer.parseInt(r.getHora())));
            temporales.add(r1);
        }
    }

    public void cargarHorariodeSeccionAlterno(String nivel, int sec) {
        this.nivelActual = nivel;
        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(this.obtenerSeccionAlterno(), this.getAnnio());
        for (RegistroHorario r : registros) {

            if (nivelActual.equals("7")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(sec);
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(sec);
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(sec);
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(sec);
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(sec);
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
            RegistroHorario r1 = r;
            r1.setDia(this.getDia(Integer.parseInt(r.getDia())));
            r1.setHora(this.getHora(Integer.parseInt(r.getHora())));
            temporales.add(r1);
        }
    }

    public void limpiarTablaHorarioConsultar(String nivel) {
        this.nivelActual = nivel;
        for (int i = 0; i < 16; i++) {
            for (int j = 1; j < 6; j++) {
                if (nivelActual.equals("7")) {
                    HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().setimo.getComponentAt(interfaz.getHorarioConsultar().setimo.getSelectedIndex());
                    hi1.jTable2.setValueAt(null, i, j);
                } else if (nivelActual.equals("8")) {
                    HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().octavo.getComponentAt(interfaz.getHorarioConsultar().octavo.getSelectedIndex());
                    hi1.jTable2.setValueAt(null, i, j);
                } else if (nivelActual.equals("9")) {
                    HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().noveno.getComponentAt(interfaz.getHorarioConsultar().noveno.getSelectedIndex());
                    hi1.jTable2.setValueAt(null, i, j);
                } else if (nivelActual.equals("10")) {
                    HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().decimo.getComponentAt(interfaz.getHorarioConsultar().decimo.getSelectedIndex());
                    hi1.jTable2.setValueAt(null, i, j);
                } else if (nivelActual.equals("11")) {
                    HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().undecimo.getComponentAt(interfaz.getHorarioConsultar().undecimo.getSelectedIndex());
                    hi1.jTable2.setValueAt(null, i, j);
                }
            }
        }
    }

    public void obtenerHorariodeSeccion(String nivel) {
        this.nivelActual = nivel;
        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(this.obtenerSeccion(), this.getAnnio());
        for (RegistroHorario r : registros) {
            if (nivelActual.equals("7")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().setimo.getComponentAt(interfaz.getHorarioConsultar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().octavo.getComponentAt(interfaz.getHorarioConsultar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().noveno.getComponentAt(interfaz.getHorarioConsultar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().decimo.getComponentAt(interfaz.getHorarioConsultar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().undecimo.getComponentAt(interfaz.getHorarioConsultar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
        }
    }

    public void obtenerHorariodeSeccion2(String nivel) {
        this.nivelActual = nivel;
        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(this.obtenerSeccion(), this.getAnnio());
        for (RegistroHorario r : registros) {
            if (nivelActual.equals("7")) {
                HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioConsultar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioConsultar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioConsultar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioConsultar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioConsultar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
        }
    }

    public void obtenerHorariodeSeccionAlterno(String nivel) {
        this.nivelActual = nivel;
        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistroTemporal().obtenerRegistrosTemporalesDeSeccion(this.obtenerSeccion(), this.getAnnio());
        for (RegistroHorario r : registros) {
            if (nivelActual.equals("7")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().setimo.getComponentAt(interfaz.getHorarioAlternoConsultar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().octavo.getComponentAt(interfaz.getHorarioAlternoConsultar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().noveno.getComponentAt(interfaz.getHorarioAlternoConsultar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().decimo.getComponentAt(interfaz.getHorarioAlternoConsultar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().undecimo.getComponentAt(interfaz.getHorarioAlternoConsultar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + "-" + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
        }
    }

    public void obtenerHorariodeSeccion(String nivel, String sec) {
        this.nivelActual = nivel;
        String seccion = nivel + "-" + sec;

        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(seccion, this.getAnnio());
        for (RegistroHorario r : registros) {
            if (nivelActual.equals("7")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().setimo.getComponentAt(interfaz.getHorarioConsultar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().octavo.getComponentAt(interfaz.getHorarioConsultar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().noveno.getComponentAt(interfaz.getHorarioConsultar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().decimo.getComponentAt(interfaz.getHorarioConsultar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioConsultar1 hi1 = (HorarioConsultar1) interfaz.getHorarioConsultar().undecimo.getComponentAt(interfaz.getHorarioConsultar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
        }
    }

    public void obtenerHorariodeSeccionAlterno(String nivel, String sec) {
        this.nivelActual = nivel;
        String seccion = nivel + "-" + sec;

        ArrayList<RegistroHorario> registros = controlGestores.getGestorRegistroTemporal().obtenerRegistrosTemporalesDeSeccion(seccion, this.getAnnio());
        for (RegistroHorario r : registros) {
            if (nivelActual.equals("7")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().setimo.getComponentAt(interfaz.getHorarioAlternoConsultar().setimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("8")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().octavo.getComponentAt(interfaz.getHorarioAlternoConsultar().octavo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("9")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().noveno.getComponentAt(interfaz.getHorarioAlternoConsultar().noveno.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("10")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().decimo.getComponentAt(interfaz.getHorarioAlternoConsultar().decimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            } else if (nivelActual.equals("11")) {
                HorarioAlternoConsultar1 hi1 = (HorarioAlternoConsultar1) interfaz.getHorarioAlternoConsultar().undecimo.getComponentAt(interfaz.getHorarioAlternoConsultar().undecimo.getSelectedIndex());
                hi1.jTable2.setValueAt(controlGestores.getGestorProfesor().obtenerProfesor(r.getCedula()).getNombre() + "-" + r.getNombreMateria() + r.getIdAula(), Integer.parseInt(r.getHora()), Integer.parseInt(r.getDia()));
            }
        }
    }

    public String obtenerSeccion() {//de acuerdo al tab en el q sté 
        String result = "";
        int seccion = 0;
        if (nivelActual.equals("7")) {
            seccion = interfaz.getHorarioInsertar().setimo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("8")) {
            seccion = interfaz.getHorarioInsertar().octavo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("9")) {
            seccion = interfaz.getHorarioInsertar().noveno.getSelectedIndex() + 1;
        } else if (nivelActual.equals("10")) {
            seccion = interfaz.getHorarioInsertar().decimo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("11")) {
            seccion = interfaz.getHorarioInsertar().undecimo.getSelectedIndex() + 1;
        }
        result = nivelActual + "-" + seccion;
        return result;
    }

    public String obtenerSeccionAlterno() {//de acuerdo al tab en el q sté 
        String result = "";
        int seccion = 0;
        if (nivelActual.equals("7")) {
            seccion = interfaz.getHorarioAlternoInsertar().setimo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("8")) {
            seccion = interfaz.getHorarioAlternoInsertar().octavo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("9")) {
            seccion = interfaz.getHorarioAlternoInsertar().noveno.getSelectedIndex() + 1;
        } else if (nivelActual.equals("10")) {
            seccion = interfaz.getHorarioAlternoInsertar().decimo.getSelectedIndex() + 1;
        } else if (nivelActual.equals("11")) {
            seccion = interfaz.getHorarioAlternoInsertar().undecimo.getSelectedIndex() + 1;
        }
        result = nivelActual + "-" + seccion;
        return result;
    }

    public boolean asignaEnHorario(RegistroHorario pRegistro) {
        boolean result = false;
        if (!(pRegistro.getCedula().equals(""))) {
            result = validarProfeEnHorario(pRegistro);
        }
        if (!(pRegistro.getIdAula().equals(""))) {
            result = validarAulaEnHorario(pRegistro);
        }
        return result;
    }

    public boolean asignaEnHorarioAlterno(RegistroHorario pRegistro) {
        boolean result = false;
        boolean aux = false;
        for (int i = 0; i < temporales.size(); i++) {
            if ((!(pRegistro.getCedula().equals("")))
                    && ((getHoraInverso(temporales.get(i).getHora()).equals(getHoraInverso(pRegistro.getHora()))))
                    && (getDiaInverso(temporales.get(i).getDia()).equals(getDiaInverso(pRegistro.getDia())))
                    && (temporales.get(i).getSeccion().equals(pRegistro.getSeccion()))) {
                temporales.get(i).setNombreMateria(pRegistro.getNombreMateria());
                temporales.get(i).setCedula(pRegistro.getCedula());
                aux = true;
            } else if ((!(pRegistro.getIdAula().equals("")))
                    && ((getHoraInverso(temporales.get(i).getHora()).equals(getHoraInverso(pRegistro.getHora()))))
                    && (getDiaInverso(temporales.get(i).getDia()).equals(getDiaInverso(pRegistro.getDia())))
                    && (temporales.get(i).getSeccion().equals(pRegistro.getSeccion()))) {
                temporales.get(i).setIdAula(pRegistro.getIdAula());
                aux = true;
            }
        }
        if (aux == false) {
            temporales.add(pRegistro);
        }
        return result;
    }

    public boolean validarProfeEnHorario(RegistroHorario pRegistro) {
        ArrayList<RegistroHorario> registrosHorario = controlGestores.getGestorRegistro().obtenerTodosLosRegistros(getAnnio());

        RegistroHorario repetido = new RegistroHorario();
        boolean var = false;
        for (int i = 0; i < registrosHorario.size(); i++) {
            if ((registrosHorario.get(i).getCedula().equals(pRegistro.getCedula()))
                    && (registrosHorario.get(i).getDia().equals(getDiaInverso(pRegistro.getDia())))
                    && (registrosHorario.get(i).getHora().equals(getHoraInverso(pRegistro.getHora())))) {
                var = true;
                repetido = registrosHorario.get(i);
            }
        }
        for (int i = 0; i < temporales.size(); i++) {
            if ((temporales.get(i).getCedula().equals(pRegistro.getCedula()))
                    && (temporales.get(i).getDia().equals(pRegistro.getDia()))
                    && (temporales.get(i).getHora().equals(pRegistro.getHora()))) {
                var = true;
                repetido = temporales.get(i);
            }
        }
        if (var == false) {
            if (setProfeEnAula(pRegistro) == false) {
                temporales.add(pRegistro);//cuando se guardan cambios,se guardan estos registros y se vacia la lista temporales
            }
        } else {
            JOptionPane.showMessageDialog(null, "El Profesor ya está asignado al grupo " + repetido.getSeccion()
                    + " el dia " + repetido.getDia() + " a las " + repetido.getHora(), "ERROR", 0);
        }
        return var;
    }

    public boolean validarAulaEnHorario(RegistroHorario pRegistro) {
        ArrayList<RegistroHorario> registrosHorario = controlGestores.getGestorRegistro().obtenerTodosLosRegistros(getAnnio());
        RegistroHorario repetido = new RegistroHorario();
        boolean var = false;
        for (int i = 0; i < registrosHorario.size(); i++) {
            if ((registrosHorario.get(i).getIdAula().equals(pRegistro.getIdAula()))
                    && (registrosHorario.get(i).getDia().equals(pRegistro.getDia()))
                    && (registrosHorario.get(i).getHora().equals(pRegistro.getAnno()))) {
                var = true;
                repetido = registrosHorario.get(i);
            }
        }
        for (int i = 0; i < temporales.size(); i++) {
            if ((temporales.get(i).getIdAula().equals(pRegistro.getIdAula()))
                    && (temporales.get(i).getDia().equals(pRegistro.getDia()))
                    && (temporales.get(i).getHora().equals(pRegistro.getHora()))) {
                var = true;
                repetido = temporales.get(i);
            }
        }
        if (var == false) {
            if (setAulaEnProfe(pRegistro) == false) {
                temporales.add(pRegistro);//cuando se guardan cambios,se guardan estos registros y se vacia la lista temporales
            }
        } else {
            JOptionPane.showMessageDialog(null, "El Aula ya está asignada al grupo " + repetido.getSeccion()
                    + " el dia " + repetido.getDia() + " a las " + repetido.getHora(), "ERROR", 0);
        }
        return var;
    }

    public boolean setProfeEnAula(RegistroHorario pRegistro) {
        boolean result = false;
        for (int i = 0; i < temporales.size(); i++) {
            if ((temporales.get(i).getDia().equals(pRegistro.getDia()))
                    && (temporales.get(i).getHora().equals(pRegistro.getHora()))) {
                temporales.get(i).setCedula(pRegistro.getCedula());
                result = true;
            }
        }
        return result;
    }

    public boolean setAulaEnProfe(RegistroHorario pRegistro) {
        boolean result = false;
        for (int i = 0; i < temporales.size(); i++) {
            if ((temporales.get(i).getDia().equals(pRegistro.getDia()))
                    && (temporales.get(i).getHora().equals(pRegistro.getHora()))) {
                temporales.get(i).setIdAula(pRegistro.getIdAula());
                result = true;
            }
        }
        return result;
    }

    public void anadirDocument(String nivel, int sec) {

        if (nivel.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorario("7");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorario("7");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorario("7");
                        }
                    });
        } else if (nivel.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorario("8");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorario("8");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorario("8");
                        }
                    });
        } else if (nivel.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorario("9");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorario("9");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorario("9");
                        }
                    });

        } else if (nivel.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorario("10");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorario("10");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorario("10");
                        }
                    });

        } else if (nivel.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorario("11");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorario("11");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorario("11");
                        }
                    });
        }
    }

    public void anadirDocumentAlterno(String nivel, int sec) {

        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("7");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("7");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("7");
                        }
                    });
        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("8");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("8");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("8");
                        }
                    });
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("9");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("9");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("9");
                        }
                    });

        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("10");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("10");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("10");
                        }
                    });

        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(sec);
            hi1.jTextField1.getDocument().addDocumentListener(
                    new DocumentListener() {

                        @Override
                        public void insertUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("11");
                        }

                        @Override
                        public void removeUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("11");
                        }

                        @Override
                        public void changedUpdate(DocumentEvent e) {
                            filtrarEnHorarioAlterno("11");
                        }
                    });
        }
    }

    public void anadirSorter(String nivel, int sec) {

        if (nivel.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        } else if (nivel.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        }

    }

    public void anadirSorterAlterno(String nivel, int sec) {

        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(sec);
            sorter = new TableRowSorter<TableModel>(hi1.profesores.getModel());
            hi1.profesores.setRowSorter(sorter);
            hi1.profesores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        }

    }

    public void filtrarEnHorario(String nivel) {

        if (nivel.equals("7")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().setimo.getComponentAt(interfaz.getHorarioInsertar().setimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);

        } else if (nivel.equals("8")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().octavo.getComponentAt(interfaz.getHorarioInsertar().octavo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("9")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().noveno.getComponentAt(interfaz.getHorarioInsertar().noveno.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("10")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().decimo.getComponentAt(interfaz.getHorarioInsertar().decimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("11")) {
            HorarioInsertar1 hi1 = (HorarioInsertar1) interfaz.getHorarioInsertar().undecimo.getComponentAt(interfaz.getHorarioInsertar().undecimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        }
    }

    public void filtrarEnHorarioAlterno(String nivel) {

        if (nivel.equals("7")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().setimo.getComponentAt(interfaz.getHorarioAlternoInsertar().setimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);

        } else if (nivel.equals("8")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().octavo.getComponentAt(interfaz.getHorarioAlternoInsertar().octavo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("9")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().noveno.getComponentAt(interfaz.getHorarioAlternoInsertar().noveno.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("10")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().decimo.getComponentAt(interfaz.getHorarioAlternoInsertar().decimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        } else if (nivel.equals("11")) {
            HorarioAlternoInsertar1 hi1 = (HorarioAlternoInsertar1) interfaz.getHorarioAlternoInsertar().undecimo.getComponentAt(interfaz.getHorarioAlternoInsertar().undecimo.getSelectedIndex());
            RowFilter<TableModel, Object> rf = null;
            int indiceColumnaTabla = 2;
            switch (hi1.jComboBox1.getSelectedIndex()) {
                case 0:
                    indiceColumnaTabla = 0;
                    break;//por nombre
                case 1:
                    indiceColumnaTabla = 1;
                    break;//por materia
            }
            try {
                rf = RowFilter.regexFilter("(?i)" + hi1.jTextField1.getText(), indiceColumnaTabla);
            } catch (java.util.regex.PatternSyntaxException e) {
            }
            sorter.setRowFilter(rf);
        }
    }

    public String getHora(int hora) {
        String result = "";
        if (hora == 0) {
            result = "7:00";
        }
        if (hora == 1) {
            result = "7:40";
        }
        if (hora == 2) {
            result = "8:25";
        }
        if (hora == 3) {
            result = "9:05";
        }
        if (hora == 4) {
            result = "10:05";
        }
        if (hora == 5) {
            result = "10:45";
        }
        if (hora == 6) {
            result = "11:30";
        }
        if (hora == 7) {
            result = "12:10";
        }
        if (hora == 8) {
            result = "1:30";
        }
        if (hora == 9) {
            result = "2:10";
        }
        if (hora == 10) {
            result = "2:55";
        }
        if (hora == 11) {
            result = "3:35";
        }
        if (hora == 12) {
            result = "4:25";
        }
        if (hora == 13) {
            result = "5:05";
        }
        return result;
    }

    public String getHoraInverso(String hora) {
        String result = "";
        if (hora == "7:00") {
            result = "0";
        }
        if (hora == "7:40") {
            result = "1";
        }
        if (hora == "8:25") {
            result = "2";
        }
        if (hora == "9:05") {
            result = "3";
        }
        if (hora == "10:05") {
            result = "4";
        }
        if (hora == "10:45") {
            result = "5";
        }
        if (hora == "11:30") {
            result = "6";
        }
        if (hora == "12:10") {
            result = "7";
        }
        if (hora == "1:30") {
            result = "8";
        }
        if (hora == "2:10") {
            result = "9";
        }
        if (hora == "2:55") {
            result = "10";
        }
        if (hora == "3:35") {
            result = "11";
        }
        if (hora == "4:25") {
            result = "12";
        }
        if (hora == "5:05") {
            result = "13";
        }
        return result;
    }

    public String getDia(int dia) {
        String result = "";
        if (dia == 1) {
            result = "Lunes";
        }
        if (dia == 2) {
            result = "Martes";
        }
        if (dia == 3) {
            result = "Miercoles";
        }
        if (dia == 4) {
            result = "Jueves";
        }
        if (dia == 5) {
            result = "Viernes";
        }
        return result;
    }

    public String getDiaInverso(String dia) {
        String result = "";
        if (dia == "Lunes") {
            result = "1";
        }
        if (dia == "Martes") {
            result = "2";
        }
        if (dia == "Miercoles") {
            result = "3";
        }
        if (dia == "Jueves") {
            result = "4";
        }
        if (dia == "Viernes") {
            result = "5";
        }
        return result;
    }

    public void guardarIngresarHorario(String nivel) {
        this.nivelActual = nivel;
        String seccion = this.obtenerSeccion();
        boolean result = false;
     // hay q verificar 2 cosas
        // 1. que se haya agregado el aula
        // 2.que no exista un horario creado previamente
        // 3. que si existe ese horario, pregunte si desea reemplazarlo
        // 4. para esto es mejor que guarde por horario
        // por esta razon un seccion para saber donde esta ubicado 

        // este metodo lo que hace es crear una lista de los q va guardar
        ArrayList<RegistroHorario> registrosDeSeccion = new ArrayList();
        for (RegistroHorario rh : temporales) {
            if (rh.getSeccion().equals(seccion)) {
                registrosDeSeccion.add(rh);
            }
        }
        if (controlGestores.getGestorRegistro().ExisteRegistro(seccion, this.getAnnio())) {
            int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este grupo ya tiene un horario registrado. ¿Desea Reemplazarlo?", "Seleccione una opcion", 1);
            if (JOptionPane.OK_OPTION == confirmado) {

                // si si desea reemplazlo, pasa a verificar que se haya agregado el aula y profesor en todos
                if (confirmarAulaYprofe(registrosDeSeccion)) {
                    // si todo esta bien pasa a guardar el horario de esa seccion
                    controlGestores.getGestorRegistro().QuitarSafe();
                    controlGestores.getGestorRegistro().borrarRegistroConSeccion(seccion);
                    for (RegistroHorario rh : registrosDeSeccion) {
                        result = controlGestores.getGestorRegistro().guardarRegistro(rh, getHoraInverso(rh.getHora()) + "-"
                                + getDiaInverso(rh.getDia()));
                    }

                } else {
                    JOptionPane.showMessageDialog(interfaz, "Faltan datos por agregar", "Exito", 1);
                }
            } else {
                // no hace nada
            }

        } else {
            // si no tenia ningun grupo asignado
            if (confirmarAulaYprofe(registrosDeSeccion)) {
                // si todo esta bien pasa a guardar el horario de esa seccion
                for (RegistroHorario rh : registrosDeSeccion) {
                    result = controlGestores.getGestorRegistro().guardarRegistro(rh, getHoraInverso(rh.getHora()) + "-"
                            + getDiaInverso(rh.getDia()));
                }

            } else {
                //JOptionPane.showMessageDialog(interfaz, "No se agrego un aula, agrege el aula y vuelva a intentarlo", "Faltan Datos", 1);
            }

        }

        this.guardarLecciones();
        if (result == true) {
            JOptionPane.showMessageDialog(null, "Datos guardados correctamente", "EXITO", 1);
//        } else {
//            JOptionPane.showMessageDialog(null, "Ocurrio un error al guardar", "ERROR", 0);
        }
        registrosDeSeccion.clear();
        // esta limpiando los temporales en interfaz, al hacer el regresar
        //temporales.clear();
    }

    public void guardarIngresarHorarioAlterno(String nivel) {
        this.nivelActual = nivel;
        String seccion = this.obtenerSeccionAlterno();
        boolean result = false;
        ArrayList<RegistroHorario> registrosDeSeccion = new ArrayList();
        for (RegistroHorario rh : temporales) {
            if (rh.getSeccion().equals(seccion)) {
                registrosDeSeccion.add(rh);
            }
        }
        if (controlGestores.getGestorRegistroTemporal().ExisteRegistroTemporal(seccion, this.getAnnio())) {
            int confirmado = JOptionPane.showConfirmDialog(interfaz, "Este grupo ya tiene un horario temporal registrado. ¿Desea Reemplazarlo?", "Seleccione una opcion", 1);
            if (JOptionPane.OK_OPTION == confirmado) {

                // si si desea reemplazlo, pasa a verificar que se haya agregado el aula y profesor en todos
                if (confirmarAulaYprofe(registrosDeSeccion)) {
                    // si todo esta bien pasa a guardar el horario de esa seccion
                    controlGestores.getGestorRegistroTemporal().QuitarSafe();
                    controlGestores.getGestorRegistroTemporal().borrarRegistroTemporalConSeccion(seccion);
                    for (RegistroHorario rh : registrosDeSeccion) {
                        result = controlGestores.getGestorRegistroTemporal().guardarRegistroTemporal(rh, getHoraInverso(rh.getHora()) + "-"
                                + getDiaInverso(rh.getDia()));
                    }

                } else {
                    //JOptionPane.showMessageDialog(interfaz, "Faltan datos por agregar", "Exito", 1);
                }
            } else {
                // no hace nada
            }

        } else {
            // si no tenia ningun grupo asignado
            if (confirmarAulaYprofe(registrosDeSeccion)) {
                // si todo esta bien pasa a guardar el horario de esa seccion
                for (RegistroHorario rh : registrosDeSeccion) {
                    result = controlGestores.getGestorRegistroTemporal().guardarRegistroTemporal(rh, getHoraInverso(rh.getHora()) + "-"
                            + getDiaInverso(rh.getDia()));
                }

            } else {
                //JOptionPane.showMessageDialog(interfaz, "No se agrego un aula, agrege el aula y vuelva a intentarlo", "Faltan Datos", 1);
            }

        }
        this.guardarLecciones();
        if (result == true) {
            JOptionPane.showMessageDialog(null, "Datos guardados correctamente", "EXITO", 1);
//        } else {
//            JOptionPane.showMessageDialog(null, "Ocurrio un error al guardar", "ERROR", 0);
        }
        registrosDeSeccion.clear();
        // esta limpiando los temporales en interfaz, al hacer el regresar
        //temporales.clear();
    }

    public void aulasNoAsignadas() {

    }

    public boolean confirmarAulaYprofe(ArrayList<RegistroHorario> registros) {
        String dia = "";
        String hora = "";
        boolean result = true;
        for (int i = 0; i < registros.size(); i++) {
            //JOptionPane.showMessageDialog(null, registros.get(1).getDia());
            if (registros.get(i).getIdAula().equals("")) {
                dia = registros.get(i).getDia();
                hora = registros.get(i).getHora();
                JOptionPane.showMessageDialog(null, "El grupo " + registros.get(i).getSeccion()
                        + " el dia " + dia + " a las " + hora + " no tiene aula asignada", "Faltan Datos", 1);
                result = false;
            }

            if (registros.get(i).getCedula().equals("")) {
                dia = registros.get(i).getDia();
                hora = registros.get(i).getHora();
                JOptionPane.showMessageDialog(null, "El grupo " + registros.get(i).getSeccion()
                        + " el dia " + dia + " a las " + hora + " no tiene profesor asignado", "Faltan Datos", 1);
                result = false;
            }
        }
        return result;
    }

    public void guardarLecciones() {
        for (int j = 0; j < lecciones.size(); j++) {
            controlGestores.getGestorProfesor().actualizarLeccionesProfesor(lecciones.get(j));
        }
    }

    public Profesor obtenerProfe(String pProfe) {
        return controlGestores.getGestorProfesor().obtenerProfesorNombre(pProfe);
    }

    public void sustituirProfeEnHorario(String actual, String nuevo) {
        for (int i = 0; i < temporales.size(); i++) {
            if (temporales.get(i).getCedula().equals(actual)) {
                temporales.get(i).setCedula(nuevo);
            }
        }
    }

    public void sustituirAulaEnHorario(String actual, String nuevo) {
        for (int i = 0; i < temporales.size(); i++) {
            if (temporales.get(i).getIdAula().equals(actual)) {
                temporales.get(i).setIdAula(nuevo);
            }
        }
    }

    public boolean campoDisponibleHorario(Object objActual, String actual, String nuevo) {
        boolean result = true;
        if (objActual != null) {
            if ((actual.split("-").length == 1) && (nuevo.split("-").length == 1)) {
                result = false;
            }
            if ((actual.split("-").length == 3) && (nuevo.split("-").length == 1)) {
                result = false;
            }
            if ((actual.split("-").length == 2) && (nuevo.split("-").length == 2)) {
                result = false;
            }
            if ((actual.split("-").length == 3) && (nuevo.split("-").length == 2)) {
                result = false;
            }
            if (result == false) {
                JOptionPane.showMessageDialog(null, "Debe eliminar el campo primero", "ERROR", 0);
            }
        }
        return result;
    }

    public void generaReporte(String pSeccion) {
        ArrayList<RegistroHorario> registroGrupo = controlGestores.getGestorRegistro().obtenerRegistrosDeSeccion(pSeccion, getAnnio());
        //String nombreProfe = controlGestores.getGestorGrupo().obtenerProfeGuia(pSeccion);//PROFES ASIGNADOS CORRECTAMENTE
        controlReportes.crearXLS(registroGrupo, " ", pSeccion, 1);
    }

    public void generaReporteAuxiliar(String pSeccion) {
        ArrayList<RegistroHorario> registroGrupo = controlGestores.getGestorRegistroTemporal().obtenerRegistrosTemporalesDeSeccion(pSeccion, getAnnio());
        //String nombreProfe = controlGestores.getGestorGrupo().obtenerProfeGuia(pSeccion);//PROFES ASIGNADOS CORRECTAMENTE
        controlReportes.crearXLS(registroGrupo, " ", pSeccion, 2);
    }

    public void generaReportesGeneral() {
        ArrayList<String> secciones = controlGestores.getGestorGrupo().ListarSecciones();
        for (int i = 0; i < secciones.size(); i++) {
            generaReporte(secciones.get(i));
        }
        JOptionPane.showMessageDialog(null, "Reportes de horario generados", "Guardado", 1);
    }

    public void generaReportesAuxGeneral() {
        ArrayList<String> secciones = controlGestores.getGestorGrupo().ListarSecciones();
        for (int i = 0; i < secciones.size(); i++) {
            generaReporteAuxiliar(secciones.get(i));
        }
        JOptionPane.showMessageDialog(null, "Reportes de horarios auxiliares generados", "Guardado", 1);
    }

    public void iniciar() {
        interfaz.init();
    }

    public Interfaz getInterfaz() {
        return interfaz;
    }

    public void setInterfaz(Interfaz interfaz) {
        this.interfaz = interfaz;
    }

    public ControlGestores getControlGestores() {
        return controlGestores;
    }

    public void setControlGestores(ControlGestores controlGestores) {
        this.controlGestores = controlGestores;
    }

}
